﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidades;
using System.Data.SqlClient;


namespace DAO
{
    public static class ActividadDAO
    {
        public static int agregarActividad(Actividad actividad)
        {
            string cmd = "INSERT INTO Actividad (act_descripcion, act_precio) VALUES (@descripcion, @precio);";
            List<SqlParameter> listaParam = new List<SqlParameter>();
            listaParam.Add(new SqlParameter("@descripcion", actividad.Descripcion));
            listaParam.Add(new SqlParameter("@precio", actividad.Precio));
            int i = DB.EjecutarCommand(cmd, listaParam);
            return i;
        }

        public static void modificarActividad(Actividad actividad)
        {
            string cmd = "UPDATE Actividad SET act_descripcion = @descripcion, act_precio = @precio ";
            cmd += "WHERE act_id = @id;";
            List<SqlParameter> listaParam = new List<SqlParameter>();
            listaParam.Add(new SqlParameter("@id", actividad.Id));
            listaParam.Add(new SqlParameter("@descripcion", actividad.Descripcion));
            listaParam.Add(new SqlParameter("@precio", actividad.Precio));
            DB.EjecutarCommand(cmd, listaParam);
        }

        public static List<Actividad> obtenerActividades(string desde,string hasta)
        {
            string cmd = "SELECT act_id, act_descripcion, act_precio FROM Actividad ";
            cmd += "WHERE act_fecha_baja IS NULL";
            List<SqlParameter> listaParam = new List<SqlParameter>();
            if (!string.IsNullOrWhiteSpace(desde))
            {
                cmd += " AND act_precio >= @precioDesde";
                listaParam.Add(new SqlParameter("@precioDesde", desde));
            }
            if (!string.IsNullOrWhiteSpace(hasta))
            {
                cmd += " AND act_precio <= @precioHasta";
                listaParam.Add(new SqlParameter("@precioHasta", hasta));
            }
            SqlDataReader dr = DB.GenerarReader(cmd,listaParam);
            List<Actividad> listaActividades = new List<Actividad>();
            while (dr.Read())
            {
                Actividad act = new Actividad();
                act.Id = Int32.Parse(dr["act_id"].ToString());
                act.Descripcion = dr["act_descripcion"].ToString();
                act.Precio = float.Parse(dr["act_precio"].ToString());
                listaActividades.Add(act);
            }
            dr.Close();

            return listaActividades;


        }

        public static List<Actividad> obtenerActividades()
        {
            string cmd = "SELECT act_id, act_descripcion, act_precio FROM Actividad ";
            cmd += "WHERE act_fecha_baja IS NULL";
            SqlDataReader dr = DB.GenerarReader(cmd);
            List<Actividad> listaActividades = new List<Actividad>();
            while (dr.Read())
            {
                Actividad act = new Actividad();
                act.Id = Int32.Parse(dr["act_id"].ToString());
                act.Descripcion = dr["act_descripcion"].ToString();
                act.Precio = float.Parse(dr["act_precio"].ToString());
                listaActividades.Add(act);
            }
            dr.Close();
            return listaActividades;
        }

        public static void bajaActividad(int idActividad)
        {
            string cmd = "UPDATE Actividad SET act_fecha_baja = GETDATE() ";
            cmd += "WHERE act_id = @id;";
            List<SqlParameter> listaParam = new List<SqlParameter>();
            listaParam.Add(new SqlParameter("@id", idActividad));
            DB.EjecutarCommand(cmd, listaParam);
        }

        public static Actividad obtenerActividadId(int id)
        {
            string cmd = "SELECT * FROM Actividad ";
            cmd += "WHERE act_id = @id;";
            List<SqlParameter> listaParam = new List<SqlParameter>();
            listaParam.Add(new SqlParameter("@id", id));
            SqlDataReader dr = DB.GenerarReader(cmd, listaParam);
            Actividad act = new Actividad();
            while (dr.Read())
            {
                act.Id = Int32.Parse(dr["act_id"].ToString());
                act.Descripcion = dr["act_descripcion"].ToString();
                act.Precio = float.Parse(dr["act_precio"].ToString());
            }
            return act;



        }
        

    }
}
